package team.bluepen.supermarket.data.dao.abstraction;

import team.bluepen.supermarket.constant.Error;
import team.bluepen.supermarket.data.entity.HbaseItem;

import java.util.List;

/**
 * 删除操作接口
 * @author Kai
 */
public interface DeleteOperate<T extends HbaseItem<T>> {
    /**
     * 不带参数视为删除全部内容
     * @return {@link Error}
     */
    Error delete();

    /**
     * 删除指定列
     * @param row 列号
     * @return {@link Error}
     */
    Error delete(String row);

    /**
     * 删除指定内容
     * @param t 实体类
     * @return {@link Error}
     */
    Error delete(T t);

    /**
     * 删除列表内容
     * @param t 需删除内容集合
     * @return {@link Error}
     */
    Error delete(List<T> t);

    /**
     * 删除指定row和Family中的内容
     * @param row Row
     * @param family Family
     * @return {@link Error}
     */
    Error delete(String row, String family);
}
